package com.example.proxy3_cglib;

import net.sf.cglib.proxy.Enhancer;

/**
 * CGLIB 只是传统代理设计上的一种功能的补充。
 * 不再强制性与接口绑定，从而实现基于类的代理设计模式。
 */
public class AppTest {
    public static void main(String[] args) {
        Message realObj = new Message();
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(realObj.getClass());
        enhancer.setCallback(new CglibProxy(realObj));

        Message proxyOjb = (Message) enhancer.create();
        String ret = proxyOjb.send("hello world");
        System.out.println("ret: " + ret);

        // output:
        //     connecting
        //     send msg: hello world
        //     closing.
        //     ret: ok
    }
}
